/**
 * 权限控制
 * 注意 import { useRouter } from 'vue-router' 这个方法只能用在组件中 这里我们只能引入router实例
 */
import useToken from '@/stores/token.js'
import router from '@/router'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css' // 引入进度条样式
const whileList = ['/login','/404'] // 如果没有token查看是否在白名单内 在就放行

// 前置路由守卫 只要路由发生跳转就会执行（跳转前执行）
router.beforeEach((to,from,next)=> {
  // 开启进度条
  nprogress.start()
  const {token} = useToken()
  // 1. 判读是否有token
  if(token){
    // 1.2 判断有token的情况下是否跳转的是login页面
    if(to.path === '/login'){
      // 1.3 因为存在token证明已尽登陆，不需要继续进行登陆 所以跳转首页
      next('/')
    }else{
      // 1.3.1 存在token可以访问其他页面 直接放行
      next()
    }
  }else {
    // 2. 没有token的情况下 查看是否在白名单内 在就放行
    if(whileList.includes(to.path)){
      next()
    }else{
      // 2.1 不在白名单就直接跳转登陆页面
      next('/login')
    }
  }
})

// 后置路由守卫
router.afterEach(()=> {
  nprogress.done() // 关闭进度条
})